﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using Iudicium.Persona;
using Iudicium.Persona.CRN;

public partial class UserControls_SelectInvolvedProcess : System.Web.UI.UserControl
{
    private static readonly ILog log = LogManager.GetLogger("LogFile");

    #region Propiedades

    public int ProcesoId
    {
        get 
        {
            int procesoId = 0;
            try
            {
                procesoId = Convert.ToInt32(ProcesoIdHiddenField.Value);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo convertir ProcesoIdHiddenField.Value a un valor entero", ex);
            }
            return procesoId;
        }
        set { ProcesoIdHiddenField.Value = value.ToString(); }
    }
    
    protected string SearchRequestHandler
    {
        get { return VirtualPathUtility.ToAbsolute("~/UserControls/Handlers/SearchPeopleForInvolved.ashx"); }
    }

    public string DemandadosInsertados
    {
        get { return InsertedDefendantHiddenField.Value; }
    }

    public string DemandantesInsertados
    {
        get { return InsertedPlaintiffHiddenField.Value; }
    }

    public string InvolucradosEliminados
    {
        get { return DeletedInvolvedHiddenField.Value; }
    }

    #endregion
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack)
            return;
        List<Iudicium.Servicio.Involucrado> plaintiffList = new List<Iudicium.Servicio.Involucrado>();
         List<Iudicium.Servicio.Involucrado> defendantList = new List<Iudicium.Servicio.Involucrado>();
        if (ProcesoId > 0)
        {
            try
            {
                defendantList = 
                    Iudicium.Servicios.CRN.InvolucradoCRN.GetInvolucradosByServicioId(ProcesoId, Iudicium.Servicio.Involucrado.TipoInvolucrado.Demandado);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo cargar la lista de demandados para el proceso " + ProcesoId, ex);
            }

            try
            {
                plaintiffList = 
                    Iudicium.Servicios.CRN.InvolucradoCRN.GetInvolucradosByServicioId(ProcesoId, Iudicium.Servicio.Involucrado.TipoInvolucrado.Demandante);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo cargar la lista de Demandantes para el proceso " + ProcesoId, ex);
            }
        }

        DefendantRepeater.DataSource = defendantList;
        DefendantRepeater.DataBind();
        PlaintiffRepeater.DataSource = plaintiffList;
        PlaintiffRepeater.DataBind();

    }

    protected string GetClassName(string person)
    {
        return ClientID + "_removePerson" + person;
    }

    protected string GetClassName()
    {
        return ClientID + "_removePerson";
    }

    protected bool IsRepeaterVisible(string repeater)
    {
        return repeater.Equals("0") ? PlaintiffRepeater.Items.Count == 0 : DefendantRepeater.Items.Count == 0;
    }

    public void Update()
    {
        List<Iudicium.Servicio.Involucrado> plaintiffList = new List<Iudicium.Servicio.Involucrado>();
        List<Iudicium.Servicio.Involucrado> defendantList = new List<Iudicium.Servicio.Involucrado>();
        if (ProcesoId > 0)
        {
            try
            {
                defendantList =
                    Iudicium.Servicios.CRN.InvolucradoCRN.GetInvolucradosByServicioId(ProcesoId, Iudicium.Servicio.Involucrado.TipoInvolucrado.Demandado);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo cargar la lista de demandados para el proceso " + ProcesoId, ex);
            }

            try
            {
                plaintiffList =
                    Iudicium.Servicios.CRN.InvolucradoCRN.GetInvolucradosByServicioId(ProcesoId, Iudicium.Servicio.Involucrado.TipoInvolucrado.Demandante);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo cargar la lista de Demandantes para el proceso " + ProcesoId, ex);
            }
        }

        DefendantRepeater.DataSource = defendantList;
        DefendantRepeater.DataBind();
        PlaintiffRepeater.DataSource = plaintiffList;
        PlaintiffRepeater.DataBind();
    }


    public string GetValueHtml()
    {
        return "<input type='hidden' value='' name='" + UniqueID + "' id='" + ClientID + "' />";
    }
}
